/**数据映射 将对象中所有属性(深层) 都改为非必填 */
type BaseType = Number | String | Boolean | Symbol | null | undefined
export type DataMap<T> = {
  [P in keyof T]?: T[P] extends BaseType ? T[P] | undefined : DataMap<T[P]>
}

//将接口的部分属性改成必选, 其余保持不变
export type CustomRequired<T, K extends keyof T> = {
  [P in K]-?: T[P]
} & Omit<T, K>

//对象包含任意属性
export type CustomObj = {
  [x: string | number]: any
}
